package cn.itsource.system;

/**
 * System类常用方法：
 * 		1.System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)(掌握)数组复制方法
 *			src: 源数组
 *			srcPos:源数组开始复制的下标
 *			dest: 目标数组
 *			destPos:目标数组开始复制下标
 *			length: 复制的元素个数
 *			从源数组src中的srcPos下标处，开始复制 length个元素到目标数组dest中，从destPos下标开始粘贴
		2.System.currentTimeMillis()（掌握）返回当前时间毫秒数。主要是用了测试程序运行时间
		
		==================下面作为了解=============================
		3. System.exit(int status)结束当前JVM		status - 退出状态。 非0状态码表示异常终止
		4. System.gc() 调用垃圾（堆中匿名对象）回收器		stop all the world  所有代码执行都会停止，等待垃圾收完后，才继续执行
 */
public class SystemTest2 {

	public static void main(String[] args) {
		System.out.println("测试exit执行前代码");
		//测试System.exit(int status)方法
//		System.exit(0);
		System.out.println("测试exit执行后代码");
		
		//测试System.gc()方法 调用垃圾（堆中匿名对象）回收器
		for (int i = 0; i < 100000; i++) {
			new Garbage();
		}
		System.gc();
		
	}

}

/**
 * 垃圾类
 *	测试回收垃圾方法
 */
class Garbage{
	static int count = 0;
	@Override//在对象被回收的时候，会自动调用
	protected void finalize() throws Throwable {
		System.err.println("被收了" + ++count);
	}
}
